Ехал домой в маршрутке и 30 минут пытался представить функцию "кусающую себя за хвост". Т.е., использующую свои возвращаемые значения без явной рекурсии. Вроде примерно понял. Когда допойму, явно будет +level и небольшой +intelligence.
Disclaimer: всё писалось как ответ на следующий комментарий,
а не как полноценная запись.
Но что-то пошло не так :-)
растолкуй, как школьнику: что такое монада?
( Пробую растолковать )